const express = require('express');
var glob = require('glob');
var session = require('express-session');
const app = express();
const bodyParser = require('body-parser');
var ueditor = require("ueditor");
var path = require("path");


let formidable = require('formidable');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.use(express.static(__dirname + '/'));

app.use('/public',express.static(path.join(__dirname, './public')))
app.use('/static',express.static(path.join(__dirname, './static')))

// 使用 session 中间件
app.use(session({
    secret :  'secret', // 对session id 相关的cookie 进行签名
    resave : true,
    saveUninitialized: false, // 是否保存未初始化的会话
    cookie : {
        maxAge : 1000 * 1 * 100, // 设置 session 的有效时间，单位毫秒
    },
  })); 
// 下面三行设置渲染的引擎模板
app.set('views', __dirname); //设置模板的目录
app.engine('html', require('ejs').__express); // 使用ejs引擎解析html文件中ejs语法
app.set('view engine', 'html'); // 设置解析模板文件类型：这里为html文件

//单独上传图片
app.use('/admin/upload',(req,res,next)=>{
  var form = new formidable.IncomingForm()
  form.encoding = 'utf-8'; // 编码
  // 保留扩展名
  form.keepExtensions = true;
  //文件存储路径 最后要注意加 '/' 否则会被存在public下
  form.uploadDir = "./public/upload";
  // 解析 formData 数据
  form.parse(req, (err, fields ,files) => {
    if(err) return next(err)
    let imgPath = files.file.path;
    let imgName = files.file.name;
    // 返回路径和文件名
    res.send({code: 1, data: { name: imgName, path: imgPath }});
})
})

//文本编辑器
app.use("/admin/ue", ueditor(path.join(__dirname, '/public'), function (req, res, next) { 
    // ueditor 客户发起上传图片请求    
    if (req.query.action === 'uploadimage'||req.query.action ==='uploadfile'||req.query.action ==='uploadvideo') {
      var foo = req.ueditor;         
      var imgname = req.ueditor.filename;  
      var img_url = '/images/ueditor/'; 
      if(req.query.action === 'uploadvideo'){
        var img_url = '/video/ueditor/'; 
      } else if(req.query.action ==='uploadfile'){
        var img_url = '/files/ueditor/'; 
      }       
       res.ue_up(img_url); 
       //你只要输入要保存的地址 。保存操作交给ueditor来做       
        res.setHeader('Content-Type', 'text/html');//IE8下载需要设置返回头尾text/html 不然json返回文件会被直接下载打开    
      }    
      //  客户端发起图片列表请求   
      else if (req.query.action === 'listimage') {    
        var dir_url = '/images/ueditor/';       
         res.ue_list(dir_url); // 客户端会列出 dir_url 目录下的所有图片    
        }    
        // 客户端发起其它请求    
        else {        
          // console.log('config.json')        
          res.setHeader('Content-Type', 'application/json');        
          res.redirect('/public/ue/php/config.json');    
        }
  }));

app.get('/iadmin/*',function(req,res){
  res.render('./static/admin/index')
})

const controllers = glob.sync(__dirname+'/server/db/**/*.js');
controllers.forEach((controller)=>{
    require(controller)(app);
})
app.get('/',(req,res)=>{
  res.render('./static/api/index')
})
app.get('/zxgk/*',(req,res)=>{
  res.render('./static/api/zxgk/:friId.html')
})
app.get('/zxgk/*/*',(req,res)=>{
  res.render('./static/api/zxgk/:friId/:id.html')
})
app.get('/search/*',(req,res)=>{
  res.render('./static/api/search/:val.html')
})
app.get('/news/*',(req,res)=>{
  res.render('./static/api/news/:type.html')
})
app.get('/detail/*',(req,res)=>{
  res.render('./static/api/detail/:newsId.html')
})
app.get('*',(req,res)=>{
  res.render('./static/api/index')
})
app.listen(8009,()=>{
    console.log('listen on port 8009');
})